Skip to main content
Version: 1.7.0

MES15 使用技术手册

一、概述

MES15 是一款高性能的嵌入式开发套件​,适用于各种物联网和边缘计算应用。本手册旨在指导用户如何正确使用和配置 MES15 开发套件​。

二、开机、关机和重启

2.1 开机

  1. 在提供开发套件时,一般会同时提供一个制作好的 Micro SD 卡,该卡可以启动 MES15 。依次插入准备好的 USB 转串口线、以太网线、Micro SD 卡,最后连接 12V 电源适配器:

⚠️ 注意:

  • 由于 MES15 在断电状态下插电源会自动开机,建议用户最后连接 12V 电源。
  1. 上电成功后,电源指示灯和系统指示灯都会亮起:

  2. 当 Micro SD 卡启动成功后,系统指示灯变蓝:

  3. 根据 「网络配置」章节 内容进行网络配置,并查看设备的ip地址。

2.2 关机

开发套件​正常工作时,输入 shutdown 命令后,系统将按预设时序自动关机:

root@mes15-8a:~# shutdown
Shutdown scheduled for Sat 2024-04-20 03:35:48 CST, use 'shutdown -c' to cancel.
root@mes15-8a:~#
root@mes15-8a:~#
root@mes15-8a:~#
Stopping session-1.scope - Session 1 of User root...
[ OK ] Removed slice system-modprobe.slice - Slice /system/modprobe.
......
[ OK ] Finished systemd-poweroff.service - System Power Off.
[ OK ] Reached target poweroff.target - System Power Off.
[ 2811.790456] vipcore, destroy device start...
[ 2811.794956] resource: Trying to free nonexistent resource <0x00000001c0000000-0x000000043fffffff>
[ 2811.804764] vipcore, destroy device end...
[ 2811.810587] ES8388 2-0011: es8388 not initialized, skipping shutdown
[ 2811.818183] reboot: Power down

2.3 重启

开发套件​正常工作时,用针状物按下如图所示的复位键,系统将按预设时序自动重启。

三、启动方式

MES15 支持多种启动方式,包括:

  • 从 Micro SD 启动:预装有操作系统的 Micro SD
  • 从 eMMC 启动:eMMC 设备经过镜像烧录后启动
  • 从网络 PXE 启动:预装有操作系统的 Micro SD 或 eMMC
  • 从网络 NFS 启动:预装有操作系统的 Micro SD 或 eMMC

3.1 Micro SD 启动

开发套件出厂时通常会附带一张预装操作系统的 Micro SD 启动卡。该启动卡不仅能够启动开发套件,还提供了一些比较基础的可执行程序。用户可以通过探索这些程序了解开发套件的基本功能,从而建立对开发套件和 SDK 的初步认知。

如需制作新的启动卡或替换现有启动卡,请按照以下步骤操作:

3.1.1 下载镜像

获取镜像的流程如下:

  1. 获取 SDK 镜像包
  2. 选择 .img.xz 格式的压缩镜像文件,先进行解压,生成 .img 镜像文件后用于烧录。

3.1.2 使用 balenaEtcher 烧录镜像

我们推荐使用 balenaEtcher 来烧录镜像,这是一款在 macOS、Windows 和 Linux 系统均可使用的镜像烧录工具。

烧录镜像的具体步骤如下:

  1. 选择镜像

  2. 选择 SD 卡

  3. 开始烧录

  4. 烧录过程

    烧录过程中界面如下。

    烧录完成后会出现 正在验证 的界面。

💡 提示:

  • 如果觉得验证比较耗时,可以点击“跳过”,不会影响烧录。
  1. 烧录完成

    烧录完成后会出现 烧录成功 的提示界面。

3.1.3 检查启动卡

制作完烧录卡后,将卡插入 Ubuntu 系统,可以发现出现 2 个分区(bootfs 分区和 rootfs 分区),具体定义如下:

  1. 启动分区(盘符名 bootfs)

启动分区用于存储系统启动过程中所需的各类文件,包括引导程序、内核镜像等。该启动分区通常采用 FAT32 文件系统格式,以确保兼容性。启动分区包含的主要文件说明如下:

  • kernel.itb:内核镜像文件
  • u-boot.itb:引导程序文件
  • fw_jump.bin:固件文件(如果适用)
  1. 根文件系统分区(盘符名 rootfs)

根文件系统分区是 Micro SD 卡上用于存储操作系统核心文件的重要区域,是文件系统的最高层级目录,包括系统的命令库、配置文件、驱动程序等,根分区通常为 ext4 文件系统格式。

Code block
.
├── bin -> usr/bin # 存放系统的基础命令,如ls、cp、mv等
├── bin.usr-is-merged
├── boot
├── dev # 设备文件,用来与硬件交互
├── etc # 存放系统配置文件,如网络配置、用户配置等
├── home # 存放系统用户的家目录
├── lib -> usr/lib # 存放系统运行所需的共享库文件
├── lib.usr-is-merged
├── media
├── mnt
├── opt
├── proc
├── run
├── sbin -> usr/sbin # 存放系统管理命令
├── sbin.usr-is-merged
├── srv # 存放服务相关的文件
├── sys # 存放系统运行时的信息
├── tmp # 临时文件存放目录
├── usr # 用户应用程序和文件的存放目录
└── var # 存放系统运行时产生的可变数据

完成启动卡制作后,可以参考 「使用技术手册」文档的「开机」章节 的相关内容启动开发套件。

📝 注意:

如果用户使用的是 Windows 操作系统,则无需手动管理这些分区,安装程序会自动设置,如果需要手动管理这些分区,可以采用 Windows 操作系统自带的磁盘管理工具进行管理。

3.2 eMMC启动

需要制作一张 Micro SD 烧录卡,并把镜像正确烧录到 eMMC,具体烧录步骤可参考 「使用技术手册」文档的「Micro SD 卡烧录 eMMC 升級」章节 的相关内容。拔出 Micro SD ,按复位键重启即为 eMMC 启动。

3.3 网络 PXE 启动

需要制作一张 Micro SD 烧录卡或者已被正确烧录过的 eMMC,PXE 启动会在仅使用 Boot.frconfig.txt 的情况下通过网络去启动系统。 要从网络 PXE 启动,首先需要在电脑端配置 TFTP 和 NFS 服务器,然后开发套件端完成配置并启动。

3.3.1 配置 TFTP 服务器

sudo apt-get install tftp-hpa tftpd-hpa
sudo apt-get install xinetd
sudo mkdir -p /pxe_server/tftp
sudo chmod 777 /pxe_server/tftp

修改 /etc/default/tftpd-hpa

TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/pxe_server/tftp"
TFTP_ADDRESS=":69"
TFTP_OPTIONS="-l -c -s"

创建 PXE 目录

sudo mkdir -p /pxe_server/tftp/pxelinux.cfg

创建 PXE 配置文件

pxelinux.cfg 目录下创建对应的 PXE 配置文件,文件名格式为 01-xx-xx-xx-xx-xx-xx,其中 01- 为固定字段,后面紧跟开发套件的 MAC 地址。

例如,针对 MAC 地址为 e6:e8:dc:ff:db:da 的开发套件,应创建文件 /pxe_server/tftp/pxelinux.cfg/01-e6-e8-dc-ff-db-da

default Ubuntu Linux-6.6
menu title ULTIMATE PXE SERVER - By Griffon - Ver 1.0
prompt 0
timeout 0

label Ubuntu Linux-6.6
kernel kernel.itb#tps-ea65xx-dk-v3
initrd rootfs.cpio.uboot

复制镜像文件

将 Micro SD 卡 bootfs 分区文件 Boot.frfw_jump.binkernel.itbrootfs.cpio.ubootu-boot.itbsapboot.froverlays 目录复制到 /pxe_server/tftp/ 目录下。在开发时可对应替换为自己的镜像文件。

启动 TFTP 服务器

sudo service tftpd-hpa restart

注意:针对不同开发套件要烧录不同内核镜像和设备树,只需在 pxelinux.cfg 目录下创建对应的 PXE 配置文件即可。

3.3.2 配置 NFS 服务器

安装 NFS 服务

sudo apt-get install nfs-kernel-server rpcbind

修改 /etc/exports,在文件末尾添加(注意:路径和 * 之间有个空格):

/srv/nfs/rootfs *(rw,sync,no_root_squash)

其中 /srv/nfs/rootfs 为 NFS 文件系统挂载路径。

修改 /etc/default/nfs-kernel-server,在文件末尾添加:

RPCNFSDOPTS="--nfs-version 2,3,4 --debug --syslog"

复制镜像文件

将 Micro SD 卡 rootfs 分区下所有文件及目录复制到 /srv/nfs/rootfs 目录下。在开发时可对应替换为自己定制的文件系统。

启动 NFS 服务

sudo systemctl restart nfs-kernel-server

3.3.3 配置开发套件

完成服务器端配置后,需要在开发套件端进行相应的网络启动参数配置。开发套件通过修改 bootfs 分区下的 config.txt 文件来设置网络启动相关参数,具体配置示例如下:

# 使能PXE
force_pxe=true
# 从eth1启动
ethact=eth1
# 服务器IP地址
serverip=192.168.56.99
# NFS文件系统挂载路径
rootpath=/srv/nfs/rootfs

完成配置文件的修改后,重新上电即可通过网络启动系统。启动成功后,启动日志中会看到打印Now switch to pxe boot字样。

3.4 网络 NFS 启动

网络 NFS 启动需要准备一张 Micro SD 烧录卡或已正确烧录的 eMMC 设备。NFS 启动会在挂载文件系统时通过网络去加载。开发套件端需要修改 bootfs 分区下的 config.txt 文件,具体配置示例如下:

# 必须关闭PXE
force_pxe=false
# 从eth1启动
ethact=eth1
# 服务器IP地址
serverip=192.168.56.99
# NFS文件系统挂载路径
rootpath=/srv/nfs/rootfs
# 使能nfs
nfs=true

完成配置文件的修改后,重新上电即可通过网络挂载文件系统。NFS 服务器搭建可参考上述 3.3.2 配置 NFS 服务器 的相关内容。

四、登录系统

4.1 串口登录

在 Windows 系统上,推荐使用 SecureCRT 或 MobaXterm 等常用串口工具,Ubuntu 系统中可以选择 tabby 等常见的串口工具。选择正确的串口(例如:COM3),设置波特率为 115200,并确保其他必要参数(如校验位)设置正确。不同的串口工具默认配置可能不同,以下是一些常见工具的配置示例:

  • SecureCRT:在"连接设置"中选择"串行",设置"波特率"为 115200,数据位为 8,停止位为 1,无校验位,无流量控制。
  • MobaXterm:在"终端" → "设置" → "串口"中,设置"波特率"为 115200,数据位为 8,停止位为 1,校验位为"无"。

系统启动后,初始用户名为tps,密码为 123456,root 账户密码为 root。登录成功后的终端如下所示。

Ubuntu 24.04 LTS mes15-8a ttyPS0

mes15-8a login: root
Password:
Welcome to Ubuntu 24.04 LTS (GNU/Linux 6.6.0 riscv64)

* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/pro

root@mes15-8a:~#

4.2 SSH 登录

使用 SSH 客户端(如 PuTTY、MobaXterm)可以通过命令行登录设备。以下是使用 MobaXterm 客户端登录的步骤:

  1. 打开 MobaXterm。
  2. 在主界面点击 "Session" → "SSH"。
  3. 在弹出的窗口中,输入设备的 IP 地址。
  4. 点击 "OK" 开始连接。
  5. 输入用户名(如 root)和密码进行登录。

使用命令行登录时,请将 your_ip 替换为设备的实际 IP 地址:

ssh root@your_ip

📝 注意:

  • 请先通过串口登录或查看路由器 DHCP 分配列表获取设备的实际 IP 地址,然后用该地址替换上述命令中的 your_ip

五、网络配置

5.1 获取 IP 地址

系统默认使用 DHCP 自动获取 IP 地址。如需获取设备的 IP 地址,请使用 ifconfig 命令:

root@mes15-8a:~# ifconfig
...
eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.56.220 netmask 255.255.254.0 broadcast 192.168.57.255
inet6 fe80::ffcb:7fab:c1f1:7ba prefixlen 64 scopeid 0x20<link>
ether ea:97:b3:36:a8:8a txqueuelen 1000 (Ethernet)
RX packets 261813 bytes 88985717 (88.9 MB)
RX errors 1023 dropped 9198 overruns 0 frame 1023
TX packets 66161 bytes 4517331 (4.5 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
device interrupt 32
...

此时 eth1 的 IP 地址为 192.168.56.220

5.2 配置静态 IP

在配置静态 IP 之前,需要选择一个未被使用的 IP 地址,可以通过 ping 命令检查某个 IP 地址是否已经被使用。

如需手动配置静态 IP,请修改 /etc/netplan/01-network-manager-all.yaml 配置文件。以下是一个示例配置文件:

network:
version: 2
renderer: NetworkManager
ethernets:
eth0:
dhcp4: no
addresses:
- 192.168.150.1/24
optional: yes
dhcp-identifier: mac
routes:
- to: default
via: 192.168.150.254
nameservers:
addresses:
- 8.8.8.8
- 8.8.4.4
eth1:
dhcp4: no
addresses:
- 192.168.56.5/24
optional: yes
dhcp-identifier: mac
routes:
- to: default
via: 192.168.57.254
nameservers:
addresses:
- 8.8.8.8
- 8.8.4.4
eth2:
dhcp4: no
addresses:
- 192.168.56.6/24
optional: yes
dhcp-identifier: mac
routes:
- to: default
via: 192.168.57.254
nameservers:
addresses:
- 8.8.8.8
- 8.8.4.4
eth3:
dhcp4: no
addresses:
- 192.168.56.7/24
optional: yes
routes:
- to: default
via: 192.168.57.254
nameservers:
addresses:
- 8.8.8.8
- 8.8.4.4

保存文件后,执行以下命令应用配置:

netplan apply

这将为 eth0、eth1、eth2 和 eth3 配置静态 IP 地址。

5.3 验证配置

如需验证静态 IP 配置是否生效,可使用 netplan try 命令:

root@mes15-8a:~# netplan try
Do you want to keep these settings?

Press ENTER before the timeout to accept the new configuration

Changes will revert in 117 seconds
Configuration accepted.

可通过 ifconfig 命令查看配置文件中定义的 IP 地址是否已激活。

5.4 动态 IP 配置

设置动态 IP 之前,需要先将 /etc/netplan/01-network-manager-all.yaml 文件中的静态 IP 配置注释掉,然后再进行配置:

network:
version: 2
renderer: NetworkManager
# ethernets:
# eth0:
# dhcp4: no
# addresses:
# - 192.168.150.1/24
# optional: yes
# dhcp-identifier: mac
# routes:
# - to: default
# via: 192.168.150.254
# nameservers:
# addresses:
# - 8.8.8.8
# - 8.8.4.4
# eth1:
# dhcp4: no
# addresses:
# - 192.168.56.5/24
# optional: yes
# dhcp-identifier: mac
# routes:
# - to: default
# via: 192.168.57.254
# nameservers:
# addresses:
# - 8.8.8.8
# - 8.8.4.4
# eth2:
# dhcp4: no
# addresses:
# - 192.168.56.6/24
# optional: yes
# dhcp-identifier: mac
# routes:
# - to: default
# via: 192.168.57.254
# nameservers:
# addresses:
# - 8.8.8.8
# - 8.8.4.4
# eth3:
# dhcp4: no
# addresses:
# - 192.168.56.7/24
# optional: yes
# routes:
# - to: default
# via: 192.168.57.254
# nameservers:
# addresses:
# - 8.8.8.8
# - 8.8.4.4

保存文件后,执行以下命令应用配置更改:

sudo netplan apply

如果系统未能获取 IP 地址,可能是因为 DHCP 服务器未运行或网络未连接。可以使用以下命令手动请求 IP:

dhclient -v eth1

这将触发 DHCP 请求并尝试从 DHCP 服务器获取 IP 地址。

如果网络无法连通,请使用系统命令训练 ETH PHY 参数,具体步骤如下:

  1. 执行 tps-eth --list 查询系统识别的网络:
root@mes15-8a:~# tps-eth --list
Net name needed to adjust delay line:
eth1
eth2
  1. 选择训练某个 ETH 网口:
root@mes15-8a:~# tps-eth eth1
MAC: a6:fa:7d:47:ee:62
Speed: 1000Mbps
Elapsed time: 3126 ms
Continuous cnt and location, tx: 58 71, rx: 47 46
Proper tx and rx: 42, 22
  1. 输入 systemctl restart NetworkManager 来立即获取 IP,使用 ifconfigip a 命令检查 IP 地址:
root@mes15-8a:~# ifconfig
eth1: flags=4163 mtu 1500
inet 192.168.56.220 netmask 255.255.254.0 broadcast 192.168.57.255
inet6 fe80::ffcb:7fab:c1f1:7ba prefixlen 64 scopeid 0x20
ether ea:97:b3:36:a8:8a txqueuelen 1000 (Ethernet)
RX packets 261813 bytes 88985717 (88.9 MB)
RX errors 1023 dropped 9198 overruns 0 frame 1023
TX packets 66161 bytes 4517331 (4.5 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
device interrupt 32

六、系统升级

系统升级是指将操作系统和系统软件从当前版本更新至新版本的过程,新版本通常会提供一些新功能、安全补丁和性能改进。不同产品类型对系统升级方式的需求存在差异,目前 SDK 支持(或计划支持)多种升级方式,包括 Micro SD 卡烧录 eMMC 升级、文件替换升级等,以下将分别进行详细说明。

6.1 Micro SD 卡 烧录 eMMC 升级

请参考 「使用技术手册」文档的「启动方式」章节的 Micro SD 启动 制作一张 Micro SD 启动卡。制作完成后,需要修改 bootfs 分区中的 config.txt 配置文件,将启动卡转换为烧录卡模式,具体配置修改如下:

# boot_mode=initramfs
boot_mode=burn

完成配置修改后,插入 Micro SD 卡后按复位键重启设备,就可以在串口终端上看到系统启动并执行 eMMC 烧录的完整过程:

Starting burn.mmc0: /dev/mmcblk1 fs info saved in /tmp/tmp.burnZ9k6kf
Copy raw: /dev/mmcblk1 -> /dev/mmcblk0, 6144 bytes...
6144+0 records in
6144+0 records out
Copy raw: /dev/mmcblk1 -> /dev/mmcblk0 success
src: /dev/mmcblk1p1:vfat:bootfs -> /dev/mmcblk0p1:vfat:bootfs
mkfs.fat 4.2 (2021-01-31)
Cannot initialize conversion from codepage 850 to ANSI_X3.4-1968: Invalid argument
Cannot initialize conversion from ANSI_X3.4-1968 to codepage 850: Invalid argument
Using internal CP850 conversion table
mkfs.fat: Warning: lowercase labels might not work properly on some systems
src: /dev/mmcblk1p2:ext4:rootfs -> /dev/mmcblk0p2:ext4:rootfs
mke2fs 1.47.0 (5-Feb-2023)
Discarding device blocks: 0/262144 done
Creating filesystem with 262144 4k blocks and 65536 inodes
Filesystem UUID: 3e680df8-1dd2-11b2-821b-5d4456229a89
Superblock backups stored on blocks:
32768, 98304, 163840, 229376

Allocating group tables: 0/8 done
Writing inode tables: 0/8 done
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: 0/8 done

Copy /dev/mmcblk1p1 -> /dev/mmcblk0p1...
Copy /dev/mmcblk1p1 -> /dev/mmcblk0p1 success.
Copy /dev/mmcblk1p2 -> /dev/mmcblk0p2...
Copy /dev/mmcblk1p2 -> /dev/mmcblk0p2 success.
boot_mode found, force set to "boot"!
100000+0 records in
100000+0 records out

烧录过程通常需要数分钟时间,完成后即不再需要 Micro SD 卡,当系统有如下打印时,可直接拔除 Micro SD 卡,系统会自动重启:

Waiting for SD card to be removed...

📝 注意:

烧录完成后 Ubuntu 系统第一次启动时会进行文件系统初始化等关键动作,此过程大概持续几分钟左右,期间请勿随意断电。

6.2 文件替换升级

在少数场景下可以采用手动替换文件的方式对系统进行升级,例如需要快速修复系统关键文件等情况。这种升级方式存在数据丢失、硬件损坏等一系列风险,所以一般仅局限于特殊场景下使用,建议由接受过原厂专业培训的人员进行操作或者提供技术指导。

文件替换操作需要在开发套件​上的 Ubuntu 系统环境下执行,用户可以通过串口工具登录到开发套件​,然后根据实际需求选择合适的操作方式。

6.2.1 备份原文件

在进行文件替换之前,建议备份所有关键文件,以防升级过程中出现问题能够恢复到原始状态。

6.2.2 替换镜像

MES15 平台启动后,将新的镜像文件上传到开发套件​的 /boot 目录下替换原有文件即可。上传文件的具体方法取决于用户的网络环境和开发套件​的配置。以下是两种常见的方法:

  • 通过 SCP 上传: 使用 SCP(Secure Copy Protocol)可以从本地计算机安全地复制文件到远程服务器。命令格式如下:
scp /path/to/new/kernel.itb root@ip:/boot/firmware

其中 /path/to/new/kernel.itb 是本地新镜像文件的路径,root@ip 是远程开发套件​的用户名和 IP 地址。将文件替换好后重启生效。

  • 通过 USB 设备上传: 将 Micro SD 启动卡通过 USB 设备连接到电脑,使用 cp 命令将镜像文件复制文件到 Micro SD 卡的 /bootfs 目录中。
cp /path/to/new/kernel.itb /run/media/bootfs

然后将替换好镜像的 Micro SD 卡重新插入开发套件​中启动。

6.2.3 验证升级

文件替换完成后,可以通过以下方法验证升级是否成功:

  • 重启开发套件​,检查是否能够正常启动。
  • 检查关键文件的版本信息,确认已更新到新版本。

七、系统使用说明

7.1 主要接口使用

7.1.1 接口概述

MES15 设备通过凤凰端子提供标准工业接口,支持快速接入和使用,全部信号均为 3.3 V 逻辑电平。相关接口布局图如下:

接口功能定义表:

接口类别端子标识功能描述
电源3.3V、GND含参考电压 VREF_3P3
GPIOIN1、IN2、OUT1、OUT2通用输入/输出数字接口
RELAYNO、COM、NC继电器常开/常闭触点接口
RS232RX、TXRS232 全双工串行通信接口
RS4851A、1BRS485 半双工串行通信接口

7.1.2 GPIO 使用

MES15 设备提供两组独立的 GPIO 输入/输出接口,具体定义如下:

端子名称GPIO编号方向功能描述
IN1GPIO406输入数字信号输入接口
OUT1GPIO412输出数字信号输出接口

以 GPIO412 输出为例:

  1. 导出 GPIO:将 GPIO 节点导出到 /sys/class/gpio/export
echo 412 > /sys/class/gpio/export
  1. 设置 GPIO 方向:设置为输入或输出。
echo out > /sys/class/gpio/gpio412/direction
  1. 读写 GPIO 值
echo 1 > /sys/class/gpio/gpio412/value  # 设置为高电平
cat /sys/class/gpio/gpio412/value # 读取当前值

芯片支持三组 GPIO ,分别命名为 SAP GPIO,CPU GPIO 和 RTC GPIO。在每个 GPIO 组内对信号从 0 开始编址,称为物理编号,此外,软件还对全部 GPIO 信号做了统一编址,称为逻辑编号,其编号规则是

GPIO 逻辑编号 = GPIO 所属组 BASE 号 + 组内物理编号

可以使用 TACO SDK 包路径 /ta-vsp/ta-samples/peripherals 目录下的 gpio.py 测试文件对 GPIO 管脚进行电平测试。

gpio.py 测试脚本复制到板端:

scp gpio.py root@ip:/usr/local/bin

通过以下步骤对 GPIO79 进行电平测试:

root@mes15-8a:/usr/local/bin# python3 gpio.py

==== Starting GPIO Manual Control Test ====
Please enter GPIO domain (cpu/rtc/sap):cpu
Please enter base GPIO number (domain cpu):79

GPIO manual control mode:
Commands:'1' to set high, '0' to set low,'q' to quit
Enter command (1/0/q):1
GPI0279 set to 1, verified value: 1
Enter command (1/0/q): 0
GPI0279 set to 0, verified value: 0
Enter command (1/0/q):q
Exiting GPIO control

=== GPIO Test Completed =====

7.1.3 UART 使用

MES15 通过 MAX1348 半双工收发器,将 UART2 转换为 RS485 差分总线,并引出一路独立总线,方便冗余或级联。

SignalFunction方向备注
RS485_A差分 AI/O总线 1
RS485_B差分 BI/O总线 1

通过 MAX3232 将 UART1 的 TTL 信号转换为 RS232 电平。短接(RS232_TX) 与 (RS232_RX),即可形成自发自收通道。

SignalFunction方向(DTE 视角)实际 TTL 源
RS232_TX发送数据输出UART1_TXD
RS232_RX接收数据输入UART1_RXD

通过/ta-vsp/ta-samples/peripherals 目录下的 uart.py 测试文件, opensendreceiveloopback 等参数进行MES15板端的RS232及RS485数据传输功能。

# 扫描端口
python3 uart.py scan

# 以 115200 波特率打开 /dev/ttyPS1(交互式)
python3 uart.py open 1 -b 115200

# 在端口 1(索引)上发送 “Hello”
python3 uart.py send "Hello" -p 1

# 发送十六进制字节
python3 uart.py send "48656c6c6f" -p /dev/ttyPS1 --hex

# 接收最多 100 字节,超时 10 秒
python3 uart.py receive -p 1 -n 100 -t 10

# 在端口 1 上进行回环测试
python3 uart.py loopback 1 -b 115200 --test "Test123"

# 在两个端口之间进行互联测试
python3 uart.py inter 0 1 -b 115200

7.1.4 RELAY 使用

RELAY 是一个用于控制继电器的模块。该功能通过操作指定的 GPIO 引脚来控制继电器的吸合(ON)与释放(OFF)状态,并检测实际操作是否成功,适用于验证继电器硬件及控制链路的完整性。

SignalFunction备注
NO继电器常开触点-
COM继电器公共端最大 2 A 30 V
NC继电器常闭触点-

工作原理:

  • 配置GPIO引脚为输出模式
  • 控制GPIO输出高电平,使继电器吸合(ON 状态)
  • 控制GPIO输出低电平,使继电器释放(OFF 状态)

通过 GPIO 控制继电器的开关状态(ON / OFF),并验证输出电平是否符合预期,对应硬件继电器的吸合与断开功能测试。

可以使用 TACO SDK 包路径 /ta-vsp/ta-samples/peripherals 目录下的 relay.py 测试文件对 RELAY 管脚进行电平测试,将 relay.py 测试脚本复制到板端:

scp relay.py root@ip:/usr/local/bin

输出示例:

root@mes15-8a:/usr/local/bin# python3 relay.py
===== Starting Relay Auto Test (GPIO276) =====
Testing relay ON (set value 1)...
Relay ON test: Success
Testing relay OFF (set value 0)...
Relay OFF test: Success

===== Relay Auto Test Result =====
All tests passed

7.2 查询硬件温度

使用命令 cat /sys/class/thermal/thermal_zone0/temp 获取 SoC 芯片温度。该命令返回的温度数值单位为毫摄氏度(mC)。

root@mes15-8a:~# cat /sys/class/thermal/thermal_zone0/temp
26816

上述命令返回的数值 26816 表示芯片温度为 26.816°C。

使用命令 cat /sys/class/thermal/thermal_zone1/temp 获取核心板温度。该命令返回的温度数值单位同样为毫摄氏度(mC)。

root@mes15-8a:~# cat /sys/class/thermal/thermal_zone1/temp
30250

7.3 查询内存信息

MES15 板载 8GB DDR 物理内存。由于部分内存需要预留给 NPU、VENC、VDEC 等硬件单元以及系统固件,操作系统只能管理其中的一部分。可以通过以下三类视角来理解内存的使用:

  1. OS 管理的部分,即可以用 mallockmalloc 等常规 API 分配出来使用。
root@mes15-8a:~# free -h
total used free shared buff/cache available
Mem: 1.7Gi 179Mi 1.4Gi 1.0Mi 179Mi 1.6Gi
Swap: 0B 0B 0B
  1. taco-sys 管理的部分,预留给 NPU、VENC、VDEC 使用,需要使用 libtacosys.so 库接口使用,可通过启动介质中 bootfs 分区里 config.txt 配置(默认值是2G),可以按需修改:
##########           Memory Configuration           ##########
# Uncomment this to set tacosys memory address to 0x140000000,
# and size to 0x80000000 bytes (2GiB)
# tacosys_mem_addr=0x140000000
# tacosys_mem_size=0x80000000

下面是一些使用 libtacosys 接口的实例代码,调用 npu_usage_tcpu_usage_t 结构体来获取使用情况:

    taco_npu_usage_t npu_usage = {0};
if (taco_sys_get_npu_usage(&npu_usage) == TACO_SUCCESS) {
printf("NPU Usage: %d%%\n", npu_usage.npu_usage);
} else {
printf("Failed to get NPU usage\n");
}

taco_cpu_usage_t cpu_usage = {0};
if (taco_sys_get_cpu_usage(&cpu_usage) == TACO_SUCCESS) {
printf("Total CPU Usage: %d%%\n", cpu_usage.total_cpu_usage);
for (int i = 0; i < 8; i++) {
printf("CPU%d Usage: %d%%\n", i, cpu_usage.cpu_usage[i]);
}
} else {
printf("Failed to get CPU usage\n");
}
  1. NPU 管理的部分,专门预留给 NPU(下面所示是注释掉的默认值),若需启用,请根据实际剩余内存调整大小:
# Uncomment this to set npu memory address to 0x1c0000000,
# and size to 0x280000000 bytes (10GiB)
# npu_mem_addr=0x1c0000000
# npu_mem_size=0x280000000

这些命令将显示 tacosys 和 NPU 内存的实际分配情况。要验证配置是否生效,可以通过重启设备并再次检查这些文件的内容。

八、系统工具说明

系统支持各式命令来辅助用户更方便的使用,以下是主要命令:

8.1 tps-version

获取软件版本。

root@mes15-8a:~# tps-version
FFmpeg: 4.3.2-2.0.0
OpenCV: 4.5.4-2.0.0
TACO version: 2.0.0
U-Boot: U-Boot 2020.01 (Jul 10 2026 - 11:06:50 +0000)
Kernel version: Linux mes15-8a 6.6.0-tps #2 SMP Wed Jun 10 08:59:52 UTC 2026 riscv64 riscv64 riscv64 GNU/Linux
HWversion: tps mes15-8a
MCUversion (marchid): 0x80000000090c0d00

8.2 lsblk

要获取系统中的分区信息,可以使用 lsblk 命令。该命令将列出所有可用的块设备及其分区。

root@mes15-8a:~# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
mmcblk0 179:0 0 29.1G 0 disk
├─mmcblk0p1 179:1 0 1G 0 part
└─mmcblk0p2 179:2 0 28.1G 0 part
mmcblk0boot0 179:8 0 8M 1 disk
mmcblk0boot1 179:16 0 8M 1 disk
mmcblk1 179:24 0 59.5G 0 disk
├─mmcblk1p1 179:25 0 1G 0 part /boot/firmware
└─mmcblk1p2 179:26 0 58.5G 0 part /

分区信息解释:

  • mmcblk0:这是一个磁盘设备,总大小为 29.1 GB。它包含两个分区:
    • mmcblk0p1:这是 mmcblk0 的第一个分区,大小为 1 GB,类型为 part(分区)。
    • mmcblk0p2:这是 mmcblk0 的第二个分区,大小为 28.1 GB,类型为 part(分区)。
  • mmcblk0boot0:这是一个磁盘设备,大小为 8 MB。它包含一个分区:
  • mmcblk0boot1:这是 mmcblk0boot0 的分区,大小为 8 MB,类型为 disk(磁盘)。
  • mmcblk1:这是另一个磁盘设备,总大小为 59.5 GB。它包含两个分区:
    • mmcblk1p1:这是 blk1 的第一个分区,大小为 1 GB,类型为 part(分区),挂载点为 /boot/firmware,这通常用于存放启动固件或引导程序。
    • mmcblk1p2:这是 blk1 的第二个分区,大小为 58.5 GB,类型为 part(分区),挂载点为 /,这是根文件系统所在的分区。

8.3 tps-smi

以 UI 的形式实时显示版本信息、时间、风扇转速、NPU 时钟频率、NPU 利用率、CPU 时钟频率、CPU 利用率等。

root@mes15-8a:~# tps-smi
Wed Jul 15 15:56:01 2026
+-----------------------------------------------------------------------------+
| TPS SMI: 1.7.0 Firmware Version: 1.7.0 TACO Version: 2.0.0 |

+---------------------------------------+-------------------------------------+
| NPU-SOM SoC-Name |CPU-CurClk CPU-Usage Mem-Usage | SOM-Current SOM-Pwr |
|Fan ChipTemp SOM-Temp |NPU-Usage0 NPU-Usage1 NPU-Clk | SOM-SN |
| - TOPSFuture EA6530|1584MHz 0% 29% | 40mA 0mW |
|0 30°C 29°C| 0% 0% N/A | MES05CIC1A |
+---------------------------------------+-------------------------------------+

使用 Ctrl+C 退出界面。

九、常见问题

9.1 无法开机

问题描述: 设备无法正常启动。

原因分析:

  1. 电源适配器可能不兼容或损坏
  2. 电源连接不稳定或接触不良

解决方案:

  1. 检查电源连接状态,确认电源线和适配器完好无损
  2. 尝试使用不同的电源适配器,确保其输出电压和电流符合设备规格要求(例如: 12V,3A)
  3. 检查电源插座是否工作正常,尝试更换插座

9.2 无法登录系统

问题描述: 无法通过串口或 SSH 方式登录系统。

原因分析:

  1. 用户名或密码输入错误
  2. 网络连接异常导致 SSH 连接失败

解决方案:

  1. 确认用户名和密码是否正确:
    • 默认用户名为 tps,密码为 123456
    • root 账户密码为 root
  2. 检查网络连接状态,确保开发套件​与计算机处于同一网络环境中
  3. 使用 SecureCRTMobaXterm 等串口工具,配置正确的串口参数(如波特率设置为 115200)

9.3 系统升级失败

问题描述: 系统升级过程中出现错误,无法完成升级。

原因分析:

  1. 升级包不完整或损坏
  2. 网络问题导致下载中断

解决方案:

  1. 验证升级包的完整性,检查文件大小并进行 MD5 校验和验证
  2. 尝试重新下载升级包
  3. 确保网络连接稳定可靠,避免在升级过程中出现连接中断情况